import { MINIO_BASE_URL } from '@/utils/appConfig.js';

/**
 * 将文件上传到MinIO服务器
 * @param {String} filePath - 本地文件路径
 * @param {Function} onProgress - 上传进度回调
 * @returns {Promise} - 返回包含上传结果的Promise
 */
export function uploadFileToMinio(filePath, onProgress) {
  console.log('开始上传文件到MinIO:', filePath);
  return new Promise((resolve, reject) => {
    const uploadTask = uni.uploadFile({
      url: MINIO_BASE_URL + '/minio/upload',
      filePath: filePath,
      name: 'file',
      header: {
        'Authorization': uni.getStorageSync('token')
      },
      success: (res) => {
        console.log('MinIO上传响应:', res);
        try {
          const result = JSON.parse(res.data);
          console.log('MinIO响应解析结果:', result);
          if (result.code === 200) {
            // 正确处理 MinIO 的响应格式
            resolve(result.data);
          } else {
            reject(new Error(result.message || '上传失败'));
          }
        } catch (e) {
          console.error('MinIO响应解析失败:', e, res.data);
          reject(new Error('解析响应失败: ' + e.message));
        }
      },
      fail: (err) => {
        console.error('MinIO上传请求失败:', err);
        reject(new Error('上传请求失败: ' + err.errMsg));
      }
    });
    
    // 监听上传进度
    if (typeof onProgress === 'function') {
      uploadTask.onProgressUpdate((res) => {
        console.log('上传进度:', res.progress + '%');
        onProgress(res.progress);
      });
    }
  });
} 